package com.sanalkitaplik.text;

import java.text.MessageFormat;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;

import javax.faces.context.FacesContext;

public class Translator {

	protected static ClassLoader getCurrentClassLoader(Object defaultObject){

		ClassLoader loader = Thread.currentThread().getContextClassLoader();

		if(loader == null){
			loader = defaultObject.getClass().getClassLoader();
		}

		return loader;
	}

	public static String getMessageResourceString(
			String bundleName, 
			String key, 
			Object params[], 
			Locale locale){

		String text = null;

		ResourceBundle bundle = 
			ResourceBundle.getBundle(bundleName, locale, 
					getCurrentClassLoader(params));

		try{
			text = bundle.getString(key);
		} catch(MissingResourceException e){
			text = "?? key " + key + " not found ??";
		}

		if(params != null){
			MessageFormat mf = new MessageFormat(text, locale);
			text = mf.format(params, new StringBuffer(), null).toString();
		}

		return text;
	}

	public static String getText(String id) {

		FacesContext context = FacesContext.getCurrentInstance();

		String text = getMessageResourceString(context.getApplication()
				.getMessageBundle(), id, null, context.getViewRoot()
				.getLocale());

		return text;
	}
}
